home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol029 / create.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-11  |  3.4 KB  |  91 lines

  1. 1 CLS:KEY OFF
  2. 2 REM  AN EXAMPLE OF HOW TO USE THIS DBMS FOLLOWS: TYPE "TEL" FOR INDEX FILE
  3. 3 REM   NAME: TYPE "TEL1" FOR SCREEN FORM FILE NAME (THIS LISTS THE FORMAT FOR
  4. 4 REM   YOUR DATA LISTINGS). TYPE "TEL2" FOR THE DATA FILE NAME (THIS LISTS THE
  5. 5 REM   ACTUAL DATA, I.E. ADDRESSES AND TELEPHONES).
  6. 100 REM--------------------------------------------------------
  7. 105 REM
  8. 110 REM                      CREATE.BAS
  9. 115 REM     Create a database from information about the files
  10. 120 REM
  11. 125 REM--------------------------------------------------------
  12. 130 GOTO 340
  13. 140 REM--------------------------------------------------------
  14. 145 REM   WRITE ( P%,FLAG%,KEYS$, ARC%, LINK% )
  15. 150 REM--------------------------------------------------------
  16. 170 REC$=SPACE$ (127)
  17. 180 FOR INDEX%=1 TO N%
  18. 190  CH%=SIZE% * (INDEX%-1)
  19. 200  ON FLAG% (INDEX%)+1 GOTO 210,230,250
  20. 210    FLAG$="E":GOTO 260
  21. 220    REM
  22. 230    FLAG%="F":GOTO 260
  23. 240    REM
  24. 250    FLAG%="D"
  25. 260  MID$(REC$,CH%+1,1)=FLAG$
  26. 270  MID$(REC$,CH%+2,SIZE%-3)=KEYS$(INDEX%)
  27. 280  MID$(REC$,CH%+SIZE%-1,2)=MKI$(ARC%(INDEX%))
  28. 290 NEXT INDEX%
  29. 300 MID$(REC$,126,2)=MKI$(LINK%)
  30. 310 LSET R$=REC$
  31. 320 PUT 1, P%
  32. 330 RETURN
  33. 340 REM----------------------------------------------------
  34. 350 REM   create: make header file for b-tree index
  35. 360 REM----------------------------------------------------
  36. 370 FOR I%=1 TO 10:PRINT:NEXT I%
  37. 380 PRINT"    Create Index File Header"
  38. 390 PRINT:PRINT:PRINT
  39. 395 LINE INPUT   "Enter index file name: " ;INDEX$
  40. 400 LINE INPUT   "      Correct (Y/N) ? ";Y$
  41. 410       IF Y$<>"Y" AND Y$<>"y" THEN 395
  42. 420 PRINT "How many characters per search key ";:INPUT SIZE%
  43. 430 LINE INPUT   "      Correct (Y/N) ? ";Y$
  44. 440       IF Y$<>"Y" AND Y$<>"y" THEN 420
  45. 450 LINE INPUT   "Enter the file name for the screen form : ";FSCREEN$
  46. 460 LINE INPUT   "      Correct (Y/N) ? ";Y$
  47. 470       IF Y$<>"Y" AND Y$<>"y" THEN 450
  48. 475 PRINT"How many screen lines in form";:INPUT LINS%
  49. 480 LINE INPUT   "      Correct (Y/N) ? ";Y$
  50. 485       IF Y$<>"Y" AND Y$<>"y" THEN 475
  51. 490 LINE INPUT   "Enter data file name : ";MAST$
  52. 495 LINE INPUT   "      Correct (Y/N) ? ";Y$
  53. 500       IF Y$<>"Y" AND Y$<>"y" THEN 490
  54. 505 PRINT"Enter number of fields in screen form : ";:INPUT AN%
  55. 510 LINE INPUT   "      Correct (Y/N) ? ";Y$
  56. 515       IF Y$<>"Y" AND Y$<>"y" THEN 505
  57. 520 REM-------------------------------------------------------
  58. 525 REM    write header file
  59. 530 REM-------------------------------------------------------
  60. 535 SIZE%=SIZE%+3
  61. 540 N%=INT(126/SIZE%)
  62. 545 OPEN "O",2, "HEADER.DAT"
  63. 550 ROOT%=1
  64. 555 LNF%=1:LNG%=0
  65. 560 P%=ROOT%
  66. 565 PRINT #2,FSCREEN$;",";ROOT%;LNG%;LNF%;AN%;LINS%;N%;SIZE%;INDEX$;",";MAST$
  67. 570 CLOSE 2
  68. 575 REM-------------------------------------------
  69. 580 REM   WRITE FIRST ROOT NODE
  70. 585 REM--------------------------------------------
  71. 590 DIM FLAG%(N%+1),KEYS$(N%+1),ARC%(N%+1)
  72. 595 ZERO$=SPACE$(SIZE%-3):LSET ZERO$="0"
  73. 600 FOR I0%=1 TO N%
  74. 605  KEYS$(I0%)=SPACE$(SIZE%-3)
  75. 610  FLAG%(I0%)=0:KEYS$(I0%)=ZERO$:ARC%(I0%)=0
  76. 615 NEXT I0%
  77. 620 LINK%=0
  78. 625 OPEN "R",1,INDEX$
  79. 630 FIELD 1, 127 AS R$
  80. 635 GOSUB 140
  81. 640 CLOSE 1
  82. 645 REM----------------------------------------------
  83. 650 REM    ALL DONE. RETURN TO DBMENU.BAS
  84. 655 REM-----------------------------------------------
  85. 660 RUN "DBMENU"
  86. 665 END
  87. 
  88. 650 REM    ALL DONE. RETURN TO DBMENU.BAS
  89. 655 REM-----------------------------------------------
  90. 660 RUN "DBMENU"
  91. 665 END